package com.love.tree;

import com.love.treebase.TreeNode;

public class Max_Depth {


    /**
     * 方法 1
     * @param root
     * @return
     */
    public static int maxDept(TreeNode root){
        if(root == null){
            return 0;
        }
        int left = maxDept(root.left);
        int right = maxDept(root.right);
        return Math.max(left,right) + 1;
    }


    private int res = 0;

    private int depth = 0;

    /**
     * 回溯法
     * @param root
     */
    public void maxDept2(TreeNode root ){
        if (root == null){
            return;
        }
        depth++;
        res = Math.max(res,depth);
        maxDept2(root.left);
        maxDept2(root.right);
        depth--;
    }


    /**
     * 这道题很好的描述了 递归中的 全局变量 和 局部变量 的差别
     * 1.局部变量这种就是，函数定义返回的就直接是最大深度的返回
     * 2.全局变量这种，函数只是遍历过程中将全局变量更改为想要的结果，因为是全局变量，在回溯栈的时候要对全局变量做撤销的动作
     */


}
